'''
问题:使用给定的整数n，编写一个程序生成一个包含(i, i*i)的字典，该字典包含1到n之间的整数(两者都包含)。
然后程序应该打印字典。假设向程序提供以下输入:8
则输出为:{1:1，2:4，3:9，4:16，5:25，6:36，,7:49，8:64}
'''

#想法:是否可以同样使用递归的方法去解决问题
d = {}
def func(x):
    if x==0:
        return d
    d.update({x:x*x})
    return func(x-1)
k = sorted(func(8).items(),key=lambda x:x[0],reverse=False)
print(d)
print(k)
print(func(8))
#方式2
# d = {}
# def func(x):
#    return d.update({x:x*x})
# for i in range(1,8+1):
#     func(i)
# print(d)
#方法3:要么直接在for循环中排

'''
总结：
    1.可以看到有规律的类型都可以使用递归的思想去解决问题
    2.了解sorted()，sorted(iterable,key,reverse) key可以自定义函数
    e.g按面积排序
    sorted会迭代的取出你mianji中的元素，传给key，然后在funcc中，通过传递过来的key进行大小的比较
       mianji = [(2,3),(1,5),(4,8)]
        def funcc(x):
            return x[0]*x[1]
        h = sorted(mianji,key= funcc,reverse=False)
        print(h)
    3.字典的items()函数
'''

